package com.ck.ips.dao.file;

import com.ck.common.model.File;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description: 素材文件dao
 * @author: zhanglei
 * @date: 2019/4/29 15:30
 */
public interface FileMapper {

    /**
     * 根据文件名称、文件类型、文件分组获取文件
     * @param fileName 文件名称
     * @param fileType 文件类型
     * @param fileGroupId 文件分组
     * @return 分页的文件信息
     */
    Page<File> getFileByPage(@Param("fileName") String fileName, @Param("fileType") String fileType, @Param("fileGroupId") Long fileGroupId);

    /**
     * 根据文件获取文件信息
     * @param fileId 文件id
     * @return 文件信息
     */
    File getFileById(Long fileId);

    /**
     * 删除文件
     * @param fileId 文件id
     */
    void deleteFileById(Long fileId);

    /**
     * 检查相应的文件后缀、文件类型存在对应文件名的数量
     * @param fileName 文件名称
     * @param fileSuffix 文件后缀
     * @param fileType 文件类型
     * @return 数量
     */
    int getCountByFileName(@Param("fileName") String fileName, @Param("fileSuffix") String fileSuffix, @Param("fileType") String fileType);

    /**
     * 根据文件id修改文件名称
     * @param fileName 文件名称
     * @param fileId 文件id
     */
    void updateFileNameById(@Param("fileName") String fileName, @Param("fileId") Long fileId);

    /**
     * 根据文件id修改文件分组
     * @param fileIdList 文件id
     * @param fileGroupId 文件分组id
     */
    void updateFileGroupById(@Param("fileIdList") List<String> fileIdList, @Param("fileGroupId") Long fileGroupId);

    /**
     * 根据文件类型和文件分组获取文件的数量
     * @param fileType 文件类型
     * @param fileGroupId 文件分组id
     * @return 总数
     */
    int getTotalByFileTypeGroup(@Param("fileType") String fileType, @Param("fileGroupId") Long fileGroupId);

    /**
     * 根据文件名和后缀获取文件信息
     * @param fileName 文件名称
     * @param extension 文件后缀
     * @return 文件信息
     */
    File getFileByName(@Param("fileName") String fileName, @Param("extension") String extension);

    /**
     * 通过相似文件名获取文件总数
     * @param fileName 文件名称
     * @return Long
     */
    Long countFileLikeName(@Param("fileSuffix") String fileSuffix, @Param("fileName") String fileName);

    /**
     * 保存文件
     * @param file File
     */
    void insertFile(File file);


}
